package com.config;

import org.springframework.boot.context.TypeExcludeFilter;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import org.springframework.core.type.ClassMetadata;
import org.springframework.core.type.classreading.MetadataReader;
import org.springframework.core.type.classreading.MetadataReaderFactory;
import org.springframework.stereotype.Component;

import java.io.IOException;

/**
 * @author chengyadong
 * @date 2022/11/7 14:22
 * @description 排除类过滤
 * 根本不起作用，在@componentScan获取候选类的时候会从excludeFilters获取到TypeExcludeFilter.class 从而调用其match方法
 * 而该方法会通过getDelegates()获取容器中所有实现TypeExcludeFilter的子类    但是问题来了，当前这个类不是主配置类，其是通过扫描加入到bdMap中的，再其未加入之前根本获取不到
 * 哪怕将其配置成配置类容器中也无法获取 因为@componentScan扫描的类是除主配置类外最先进入bdMap的？？？？？？？？
 *
 * 只有将其作为主配置类并且在@SpringBootApplication修饰的配置类之前加载进入bd才可以生效 或者通过ApplicationContextInitilizer
 */
/*@Configuration
@Order(1)*/
public class TypeExcludeFilterText extends TypeExcludeFilter {
	@Override
	public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException {
		ClassMetadata z = metadataReader.getClassMetadata();
		String className = z.getClassName();
		return super.match(metadataReader, metadataReaderFactory);
	}
}
